<?php

require_once 'Mobitv/Admin/Action.php';
require_once('Recaptcha/recaptchalib.php');

class LoginAction extends Mobitv_Admin_Action {

    public function execute() {
        if (isset($_SESSION['userid']) && $_SESSION['userid'])
            $this->redirect('/admin/detail');
        $this->setOption('layout', 'login');

        $publickey = $this->_config['captcha']['publickey'];
        $privatekey = $this->_config['captcha']['privatekey'];
        # the response from reCAPTCHA
        $resp = null;
        # the error code from reCAPTCHA, if any
        $error = null;

        echo $_SESSION['captcha'];

        $report = null;
        $ref = isset($_REQUEST['ref']) ? $_REQUEST['ref'] : '';

        if (isset ($_POST['recaptcha_challenge_field'])) {
            $resp = recaptcha_check_answer($privatekey,
                            $_SERVER["REMOTE_ADDR"],
                            $_POST["recaptcha_challenge_field"],
                            $_POST["recaptcha_response_field"]);
            if ($resp->is_valid) {
                if ($_POST) {
                    $userDao = Vega_Dao::factory('Mobitv_Admin_Admin');
                    $username = $_POST['username'];
                    $password = $_POST['password'];

                    $verifyUserUrl = $userDao->getGroupAdminUser($username, $password);
                    $httpPost = $_SERVER['HTTP_HOST'];
                    $arrUrl = explode(":", $httpPost);

                    $ipPublic = $this->_config['ip_public'];
                    $ipPrivate = $this->_config['ip_private'];

                    if ($verifyUserUrl && $arrUrl[0] == $ipPublic || !$verifyUserUrl && in_array($arrUrl[0], $ipPrivate)) {
                        $report = "Bạn không có quyền truy cập vào trang này!";
                    } else {

                        $userIsAuthenticated = $userDao->isAuthenticated($username, $password);

                        if (!$username || !$password) {
                            $report = "Bạn phải nhập tên truy cập và mật khẩu!";
                        } else if (!$userIsAuthenticated) {
                            $report = "Thông tin đăng nhập không chính xác!";
                        } else {
                            list($userID, $groupId, $userAccess, $abbr, $inactive) = $userIsAuthenticated;
                            if ($inactive == 1) {
                                $report = "Tài khoản này đã bị xóa!";
                            } else {
                                // Save user session
                                $_SESSION['username'] = $username;
                                $_SESSION['userid'] = $userID;

                                // Co duoc thay het cac video hay chi thay video cua minh
                                $_SESSION['viewall'] = $userAccess;
                                $_SESSION['groupid'] = $groupId;
                                $_SESSION['abbr'] = $abbr;
                                $this->updateLogAdmin($userID, 'login', $userID, 'login');
                                // Save user cookie
                                if (isset($_POST['persistent'])) {
                                    // TODO: get expire time in config
                                    // Expire in 30 days
                                    $expire = time() + 2592000;
                                    $userHash = md5($userID . $username . 'Mobitv');

                                    setcookie("userid", $userID, $expire, '/');
                                    setcookie("username", $username, $expire, '/');
                                    setcookie("userhash", $userHash, $expire, '/');
                                }
                                if ($ref) {
                                    // Back to previous page
                                    $this->redirect(base64_decode($ref));
                                } else {
                                    $this->redirect('/admin/detail');
                                }
                            }
                        }
                    }
                }
            } else {
                $report = "Chuỗi ký tự nhập vào không chính xác!";
            }
        }
        $this->_view->assign('captcha_html', recaptcha_get_html($publickey, $error));
        $this->_view->assign('report', $report);
    }

}
